home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / perl / 5.10.0 / CORE / XSUB.h < prev   
Encoding:
C/C++ Source or Header  |  2009-06-26  |  20.7 KB  |  656 lines

  1. /*    XSUB.h
  2.  *
  3.  *    Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
  4.  *    2003, 2004, 2005, 2006, 2007 by Larry Wall and others
  5.  *
  6.  *    You may distribute under the terms of either the GNU General Public
  7.  *    License or the Artistic License, as specified in the README file.
  8.  *
  9.  */
  10.  
  11. #ifndef _INC_PERL_XSUB_H
  12. #define _INC_PERL_XSUB_H 1
  13.  
  14. /* first, some documentation for xsubpp-generated items */
  15.  
  16. /*
  17. =head1 Variables created by C<xsubpp> and C<xsubpp> internal functions
  18.  
  19. =for apidoc Amn|char*|CLASS
  20. Variable which is setup by C<xsubpp> to indicate the 
  21. class name for a C++ XS constructor.  This is always a C<char*>.  See C<THIS>.
  22.  
  23. =for apidoc Amn|(whatever)|RETVAL
  24. Variable which is setup by C<xsubpp> to hold the return value for an 
  25. XSUB. This is always the proper type for the XSUB. See 
  26. L<perlxs/"The RETVAL Variable">.
  27.  
  28. =for apidoc Amn|(whatever)|THIS
  29. Variable which is setup by C<xsubpp> to designate the object in a C++ 
  30. XSUB.  This is always the proper type for the C++ object.  See C<CLASS> and 
  31. L<perlxs/"Using XS With C++">.
  32.  
  33. =for apidoc Amn|I32|ax
  34. Variable which is setup by C<xsubpp> to indicate the stack base offset,
  35. used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros.  The C<dMARK> macro
  36. must be called prior to setup the C<MARK> variable.
  37.  
  38. =for apidoc Amn|I32|items
  39. Variable which is setup by C<xsubpp> to indicate the number of 
  40. items on the stack.  See L<perlxs/"Variable-length Parameter Lists">.
  41.  
  42. =for apidoc Amn|I32|ix
  43. Variable which is setup by C<xsubpp> to indicate which of an 
  44. XSUB's aliases was used to invoke it.  See L<perlxs/"The ALIAS: Keyword">.
  45.  
  46. =for apidoc Am|SV*|ST|int ix
  47. Used to access elements on the XSUB's stack.
  48.  
  49. =for apidoc AmU||XS
  50. Macro to declare an XSUB and its C parameter list.  This is handled by
  51. C<xsubpp>.
  52.  
  53. =for apidoc Ams||dAX
  54. Sets up the C<ax> variable.
  55. This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
  56.  
  57. =for apidoc Ams||dAXMARK
  58. Sets up the C<ax> variable and stack marker variable C<mark>.
  59. This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
  60.  
  61. =for apidoc Ams||dITEMS
  62. Sets up the C<items> variable.
  63. This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
  64.  
  65. =for apidoc Ams||dXSARGS
  66. Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.
  67. Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
  68. This is usually handled automatically by C<xsubpp>.
  69.  
  70. =for apidoc Ams||dXSI32
  71. Sets up the C<ix> variable for an XSUB which has aliases.  This is usually
  72. handled automatically by C<xsubpp>.
  73.  
  74. =for apidoc Ams||dUNDERBAR
  75. Sets up the C<padoff_du> variable for an XSUB that wishes to use
  76. C<UNDERBAR>.
  77.  
  78. =for apidoc AmU||UNDERBAR
  79. The SV* corresponding to the $_ variable. Works even if there
  80. is a lexical $_ in scope.
  81.  
  82. =cut
  83. */
  84.  
  85. #ifndef PERL_UNUSED_ARG
  86. #  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
  87. #    include <note.h>
  88. #    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
  89. #  else
  90. #    define PERL_UNUSED_ARG(x) ((void)x)
  91. #  endif
  92. #endif
  93. #ifndef PERL_UNUSED_VAR
  94. #  define PERL_UNUSED_VAR(x) ((void)x)
  95. #endif
  96.  
  97. #define ST(off) PL_stack_base[ax + (off)]
  98.  
  99. /* XSPROTO() is also used by SWIG like this:
  100.  *
  101.  *     typedef XSPROTO(SwigPerlWrapper);
  102.  *     typedef SwigPerlWrapper *SwigPerlWrapperPtr;
  103.  *
  104.  * This code needs to be compilable under both C and C++.
  105.  *
  106.  * Don't forget to change the __attribute__unused__ version of XS()
  107.  * below too if you change XSPROTO() here.
  108.  */
  109. #define XSPROTO(name) void name(pTHX_ CV* cv)
  110.  
  111. #undef XS
  112. #if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
  113. #  define XS(name) __declspec(dllexport) XSPROTO(name)
  114. #endif
  115. #if defined(__SYMBIAN32__)
  116. #  define XS(name) EXPORT_C XSPROTO(name)
  117. #endif
  118. #ifndef XS
  119. #  if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
  120. #    define XS(name) void name(pTHX_ CV* cv __attribute__unused__)
  121. #  else
  122. #    ifdef __cplusplus
  123. #      define XS(name) extern "C" XSPROTO(name)
  124. #    else
  125. #      define XS(name) XSPROTO(name)
  126. #    endif
  127. #  endif
  128. #endif
  129.  
  130. #define dAX const I32 ax = (I32)(MARK - PL_stack_base + 1)
  131.  
  132. #define dAXMARK                \
  133.     I32 ax = POPMARK;    \
  134.     register SV **mark = PL_stack_base + ax++
  135.  
  136. #define dITEMS I32 items = (I32)(SP - MARK)
  137.  
  138. #if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
  139. #  define dXSARGS \
  140.     NOTE(ARGUNUSED(cv)) \
  141.     dSP; dAXMARK; dITEMS
  142. #else
  143. #  define dXSARGS \
  144.     dSP; dAXMARK; dITEMS
  145. #endif
  146.  
  147. #define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
  148.                  ? PAD_SV(PL_op->op_targ) : sv_newmortal())
  149.  
  150. /* Should be used before final PUSHi etc. if not in PPCODE section. */
  151. #define XSprePUSH (sp = PL_stack_base + ax - 1)
  152.  
  153. #define XSANY CvXSUBANY(cv)
  154.  
  155. #define dXSI32 I32 ix = XSANY.any_i32
  156.  
  157. #ifdef __cplusplus
  158. #  define XSINTERFACE_CVT(ret,name) ret (*name)(...)
  159. #  define XSINTERFACE_CVT_ANON(ret) ret (*)(...)
  160. #else
  161. #  define XSINTERFACE_CVT(ret,name) ret (*name)()
  162. #  define XSINTERFACE_CVT_ANON(ret) ret (*)()
  163. #endif
  164. #define dXSFUNCTION(ret)        XSINTERFACE_CVT(ret,XSFUNCTION)
  165. #define XSINTERFACE_FUNC(ret,cv,f)     ((XSINTERFACE_CVT_ANON(ret))(f))
  166. #define XSINTERFACE_FUNC_SET(cv,f)    \
  167.         CvXSUBANY(cv).any_dxptr = (void (*) (pTHX_ void*))(f)
  168.  
  169. #define dUNDERBAR PADOFFSET padoff_du = find_rundefsvoffset()
  170. #define UNDERBAR ((padoff_du == NOT_IN_PAD \
  171.         || PAD_COMPNAME_FLAGS_isOUR(padoff_du)) \
  172.     ? DEFSV : PAD_SVl(padoff_du))
  173.  
  174. /* Simple macros to put new mortal values onto the stack.   */
  175. /* Typically used to return values from XS functions.       */
  176.  
  177. /*
  178. =head1 Stack Manipulation Macros
  179.  
  180. =for apidoc Am|void|XST_mIV|int pos|IV iv
  181. Place an integer into the specified position C<pos> on the stack.  The
  182. value is stored in a new mortal SV.
  183.  
  184. =for apidoc Am|void|XST_mNV|int pos|NV nv
  185. Place a double into the specified position C<pos> on the stack.  The value
  186. is stored in a new mortal SV.
  187.  
  188. =for apidoc Am|void|XST_mPV|int pos|char* str
  189. Place a copy of a string into the specified position C<pos> on the stack. 
  190. The value is stored in a new mortal SV.
  191.  
  192. =for apidoc Am|void|XST_mNO|int pos
  193. Place C<&PL_sv_no> into the specified position C<pos> on the
  194. stack.
  195.  
  196. =for apidoc Am|void|XST_mYES|int pos
  197. Place C<&PL_sv_yes> into the specified position C<pos> on the
  198. stack.
  199.  
  200. =for apidoc Am|void|XST_mUNDEF|int pos
  201. Place C<&PL_sv_undef> into the specified position C<pos> on the
  202. stack.
  203.  
  204. =for apidoc Am|void|XSRETURN|int nitems
  205. Return from XSUB, indicating number of items on the stack.  This is usually
  206. handled by C<xsubpp>.
  207.  
  208. =for apidoc Am|void|XSRETURN_IV|IV iv
  209. Return an integer from an XSUB immediately.  Uses C<XST_mIV>.
  210.  
  211. =for apidoc Am|void|XSRETURN_UV|IV uv
  212. Return an integer from an XSUB immediately.  Uses C<XST_mUV>.
  213.  
  214. =for apidoc Am|void|XSRETURN_NV|NV nv
  215. Return a double from an XSUB immediately.  Uses C<XST_mNV>.
  216.  
  217. =for apidoc Am|void|XSRETURN_PV|char* str
  218. Return a copy of a string from an XSUB immediately.  Uses C<XST_mPV>.
  219.  
  220. =for apidoc Ams||XSRETURN_NO
  221. Return C<&PL_sv_no> from an XSUB immediately.  Uses C<XST_mNO>.
  222.  
  223. =for apidoc Ams||XSRETURN_YES
  224. Return C<&PL_sv_yes> from an XSUB immediately.  Uses C<XST_mYES>.
  225.  
  226. =for apidoc Ams||XSRETURN_UNDEF
  227. Return C<&PL_sv_undef> from an XSUB immediately.  Uses C<XST_mUNDEF>.
  228.  
  229. =for apidoc Ams||XSRETURN_EMPTY
  230. Return an empty list from an XSUB immediately.
  231.  
  232. =head1 Variables created by C<xsubpp> and C<xsubpp> internal functions
  233.  
  234. =for apidoc AmU||newXSproto|char* name|XSUBADDR_t f|char* filename|const char *proto
  235. Used by C<xsubpp> to hook up XSUBs as Perl subs.  Adds Perl prototypes to
  236. the subs.
  237.  
  238. =for apidoc AmU||XS_VERSION
  239. The version identifier for an XS module.  This is usually
  240. handled automatically by C<ExtUtils::MakeMaker>.  See C<XS_VERSION_BOOTCHECK>.
  241.  
  242. =for apidoc Ams||XS_VERSION_BOOTCHECK
  243. Macro to verify that a PM module's $VERSION variable matches the XS
  244. module's C<XS_VERSION> variable.  This is usually handled automatically by
  245. C<xsubpp>.  See L<perlxs/"The VERSIONCHECK: Keyword">.
  246.  
  247. =head1 Simple Exception Handling Macros
  248.  
  249. =for apidoc Ams||dXCPT
  250. Set up necessary local variables for exception handling.
  251. See L<perlguts/"Exception Handling">.
  252.  
  253. =for apidoc AmU||XCPT_TRY_START
  254. Starts a try block.  See L<perlguts/"Exception Handling">.
  255.  
  256. =for apidoc AmU||XCPT_TRY_END
  257. Ends a try block.  See L<perlguts/"Exception Handling">.
  258.  
  259. =for apidoc AmU||XCPT_CATCH
  260. Introduces a catch block.  See L<perlguts/"Exception Handling">.
  261.  
  262. =for apidoc Ams||XCPT_RETHROW
  263. Rethrows a previously caught exception.  See L<perlguts/"Exception Handling">.
  264.  
  265. =cut
  266. */
  267.  
  268. #define XST_mIV(i,v)  (ST(i) = sv_2mortal(newSViv(v))  )
  269. #define XST_mUV(i,v)  (ST(i) = sv_2mortal(newSVuv(v))  )
  270. #define XST_mNV(i,v)  (ST(i) = sv_2mortal(newSVnv(v))  )
  271. #define XST_mPV(i,v)  (ST(i) = sv_2mortal(newSVpv(v,0)))
  272. #define XST_mPVN(i,v,n)  (ST(i) = sv_2mortal(newSVpvn(v,n)))
  273. #define XST_mNO(i)    (ST(i) = &PL_sv_no   )
  274. #define XST_mYES(i)   (ST(i) = &PL_sv_yes  )
  275. #define XST_mUNDEF(i) (ST(i) = &PL_sv_undef)
  276.  
  277. #define XSRETURN(off)                    \
  278.     STMT_START {                    \
  279.     const IV tmpXSoff = (off);            \
  280.     PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1);    \
  281.     return;                        \
  282.     } STMT_END
  283.  
  284. #define XSRETURN_IV(v) STMT_START { XST_mIV(0,v);  XSRETURN(1); } STMT_END
  285. #define XSRETURN_UV(v) STMT_START { XST_mUV(0,v);  XSRETURN(1); } STMT_END
  286. #define XSRETURN_NV(v) STMT_START { XST_mNV(0,v);  XSRETURN(1); } STMT_END
  287. #define XSRETURN_PV(v) STMT_START { XST_mPV(0,v);  XSRETURN(1); } STMT_END
  288. #define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n);  XSRETURN(1); } STMT_END
  289. #define XSRETURN_NO    STMT_START { XST_mNO(0);    XSRETURN(1); } STMT_END
  290. #define XSRETURN_YES   STMT_START { XST_mYES(0);   XSRETURN(1); } STMT_END
  291. #define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END
  292. #define XSRETURN_EMPTY STMT_START {                XSRETURN(0); } STMT_END
  293.  
  294. #define newXSproto(a,b,c,d)    newXS_flags(a,b,c,d,0)
  295.  
  296. #ifdef XS_VERSION
  297. #  define XS_VERSION_BOOTCHECK \
  298.     STMT_START {                            \
  299.     SV *_sv;                            \
  300.     const char *vn = NULL, *module = SvPV_nolen_const(ST(0));    \
  301.     if (items >= 2)     /* version supplied as bootstrap arg */    \
  302.         _sv = ST(1);                        \
  303.     else {                                \
  304.         /* XXX GV_ADDWARN */                    \
  305.         _sv = get_sv(Perl_form(aTHX_ "%s::%s", module,        \
  306.                 vn = "XS_VERSION"), FALSE);        \
  307.         if (!_sv || !SvOK(_sv))                    \
  308.         _sv = get_sv(Perl_form(aTHX_ "%s::%s", module,    \
  309.                     vn = "VERSION"), FALSE);        \
  310.     }                                \
  311.     if (_sv) {                            \
  312.         SV *xssv = Perl_newSVpv(aTHX_ XS_VERSION, 0);        \
  313.         xssv = new_version(xssv);                    \
  314.         if ( !sv_derived_from(_sv, "version") )            \
  315.         _sv = new_version(_sv);                \
  316.         if ( vcmp(_sv,xssv) )                    \
  317.         Perl_croak(aTHX_ "%s object version %"SVf" does not match %s%s%s%s %"SVf,\
  318.               module, SVfARG(vstringify(xssv)),            \
  319.               vn ? "$" : "", vn ? module : "", vn ? "::" : "",    \
  320.               vn ? vn : "bootstrap parameter", SVfARG(vstringify(_sv)));\
  321.     }                                                               \
  322.     } STMT_END
  323. #else
  324. #  define XS_VERSION_BOOTCHECK
  325. #endif
  326.  
  327. #ifdef NO_XSLOCKS
  328. #  define dXCPT             dJMPENV; int rEtV = 0
  329. #  define XCPT_TRY_START    JMPENV_PUSH(rEtV); if (rEtV == 0)
  330. #  define XCPT_TRY_END      JMPENV_POP;
  331. #  define XCPT_CATCH        if (rEtV != 0)
  332. #  define XCPT_RETHROW      JMPENV_JUMP(rEtV)
  333. #endif
  334.  
  335. /* 
  336.    The DBM_setFilter & DBM_ckFilter macros are only used by 
  337.    the *DB*_File modules 
  338. */
  339.  
  340. #define DBM_setFilter(db_type,code)                \
  341.     STMT_START {                        \
  342.         if (db_type)                    \
  343.             RETVAL = sv_mortalcopy(db_type) ;        \
  344.         ST(0) = RETVAL ;                    \
  345.         if (db_type && (code == &PL_sv_undef)) {        \
  346.                 SvREFCNT_dec(db_type) ;                \
  347.             db_type = NULL ;                \
  348.         }                            \
  349.         else if (code) {                    \
  350.             if (db_type)                    \
  351.                 sv_setsv(db_type, code) ;            \
  352.             else                        \
  353.                 db_type = newSVsv(code) ;            \
  354.         }                                \
  355.     } STMT_END
  356.  
  357. #define DBM_ckFilter(arg,type,name)                \
  358.         STMT_START {                        \
  359.     if (db->type) {                        \
  360.         if (db->filtering) {                \
  361.             croak("recursion detected in %s", name) ;    \
  362.         }                                     \
  363.         ENTER ;                        \
  364.         SAVETMPS ;                        \
  365.         SAVEINT(db->filtering) ;                \
  366.         db->filtering = TRUE ;                \
  367.         SAVESPTR(DEFSV) ;                    \
  368.             if (name[7] == 's')                                 \
  369.                 arg = newSVsv(arg);                             \
  370.         DEFSV = arg ;                    \
  371.         SvTEMP_off(arg) ;                    \
  372.         PUSHMARK(SP) ;                    \
  373.         PUTBACK ;                        \
  374.         (void) perl_call_sv(db->type, G_DISCARD);         \
  375.         SPAGAIN ;                        \
  376.         PUTBACK ;                        \
  377.         FREETMPS ;                        \
  378.         LEAVE ;                        \
  379.             if (name[7] == 's'){                                \
  380.                 arg = sv_2mortal(arg);                          \
  381.             }                                                   \
  382.     } } STMT_END                                                     
  383.  
  384. #if 1        /* for compatibility */
  385. #  define VTBL_sv        &PL_vtbl_sv
  386. #  define VTBL_env        &PL_vtbl_env
  387. #  define VTBL_envelem        &PL_vtbl_envelem
  388. #  define VTBL_sig        &PL_vtbl_sig
  389. #  define VTBL_sigelem        &PL_vtbl_sigelem
  390. #  define VTBL_pack        &PL_vtbl_pack
  391. #  define VTBL_packelem        &PL_vtbl_packelem
  392. #  define VTBL_dbline        &PL_vtbl_dbline
  393. #  define VTBL_isa        &PL_vtbl_isa
  394. #  define VTBL_isaelem        &PL_vtbl_isaelem
  395. #  define VTBL_arylen        &PL_vtbl_arylen
  396. #  define VTBL_glob        &PL_vtbl_glob
  397. #  define VTBL_mglob        &PL_vtbl_mglob
  398. #  define VTBL_nkeys        &PL_vtbl_nkeys
  399. #  define VTBL_taint        &PL_vtbl_taint
  400. #  define VTBL_substr        &PL_vtbl_substr
  401. #  define VTBL_vec        &PL_vtbl_vec
  402. #  define VTBL_pos        &PL_vtbl_pos
  403. #  define VTBL_bm        &PL_vtbl_bm
  404. #  define VTBL_fm        &PL_vtbl_fm
  405. #  define VTBL_uvar        &PL_vtbl_uvar
  406. #  define VTBL_defelem        &PL_vtbl_defelem
  407. #  define VTBL_regexp        &PL_vtbl_regexp
  408. #  define VTBL_regdata        &PL_vtbl_regdata
  409. #  define VTBL_regdatum        &PL_vtbl_regdatum
  410. #  ifdef USE_LOCALE_COLLATE
  411. #    define VTBL_collxfrm    &PL_vtbl_collxfrm
  412. #  endif
  413. #  define VTBL_amagic        &PL_vtbl_amagic
  414. #  define VTBL_amagicelem    &PL_vtbl_amagicelem
  415. #endif
  416.  
  417. #include "perlapi.h"
  418. #ifndef PERL_MAD
  419. #  undef PL_madskills
  420. #  undef PL_xmlfp
  421. #  define PL_madskills 0
  422. #  define PL_xmlfp 0
  423. #endif
  424.  
  425. #if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_GET_CONTEXT) && !defined(PERL_CORE)
  426. #  undef aTHX
  427. #  undef aTHX_
  428. #  define aTHX        PERL_GET_THX
  429. #  define aTHX_        aTHX,
  430. #endif
  431.  
  432. #if defined(PERL_IMPLICIT_SYS) && !defined(PERL_CORE)
  433. #  ifndef NO_XSLOCKS
  434. # if defined (NETWARE) && defined (USE_STDIO)
  435. #    define times        PerlProc_times
  436. #    define setuid        PerlProc_setuid
  437. #    define setgid        PerlProc_setgid
  438. #    define getpid        PerlProc_getpid
  439. #    define pause        PerlProc_pause
  440. #    define exit        PerlProc_exit
  441. #    define _exit        PerlProc__exit
  442. # else
  443. #    undef closedir
  444. #    undef opendir
  445. #    undef stdin
  446. #    undef stdout
  447. #    undef stderr
  448. #    undef feof
  449. #    undef ferror
  450. #    undef fgetpos
  451. #    undef ioctl
  452. #    undef getlogin
  453. #    undef setjmp
  454. #    undef getc
  455. #    undef ungetc
  456. #    undef fileno
  457.  
  458. /* Following symbols were giving redefinition errors while building extensions - sgp 17th Oct 2000 */
  459. #ifdef NETWARE
  460. #    undef readdir
  461. #    undef fstat
  462. #    undef stat
  463. #    undef longjmp
  464. #    undef endhostent
  465. #    undef endnetent
  466. #    undef endprotoent
  467. #    undef endservent
  468. #    undef gethostbyaddr
  469. #    undef gethostbyname
  470. #    undef gethostent
  471. #    undef getnetbyaddr
  472. #    undef getnetbyname
  473. #    undef getnetent
  474. #    undef getprotobyname
  475. #    undef getprotobynumber
  476. #    undef getprotoent
  477. #    undef getservbyname
  478. #    undef getservbyport
  479. #    undef getservent
  480. #    undef inet_ntoa
  481. #    undef sethostent
  482. #    undef setnetent
  483. #    undef setprotoent
  484. #    undef setservent
  485. #endif    /* NETWARE */
  486.  
  487. #    undef  socketpair
  488.  
  489. #    define mkdir        PerlDir_mkdir
  490. #    define chdir        PerlDir_chdir
  491. #    define rmdir        PerlDir_rmdir
  492. #    define closedir        PerlDir_close
  493. #    define opendir        PerlDir_open
  494. #    define readdir        PerlDir_read
  495. #    define rewinddir        PerlDir_rewind
  496. #    define seekdir        PerlDir_seek
  497. #    define telldir        PerlDir_tell
  498. #    define putenv        PerlEnv_putenv
  499. #    define getenv        PerlEnv_getenv
  500. #    define uname        PerlEnv_uname
  501. #    define stdin        PerlSIO_stdin
  502. #    define stdout        PerlSIO_stdout
  503. #    define stderr        PerlSIO_stderr
  504. #    define fopen        PerlSIO_fopen
  505. #    define fclose        PerlSIO_fclose
  506. #    define feof        PerlSIO_feof
  507. #    define ferror        PerlSIO_ferror
  508. #    define clearerr        PerlSIO_clearerr
  509. #    define getc        PerlSIO_getc
  510. #    define fputc        PerlSIO_fputc
  511. #    define fputs        PerlSIO_fputs
  512. #    define fflush        PerlSIO_fflush
  513. #    define ungetc        PerlSIO_ungetc
  514. #    define fileno        PerlSIO_fileno
  515. #    define fdopen        PerlSIO_fdopen
  516. #    define freopen        PerlSIO_freopen
  517. #    define fread        PerlSIO_fread
  518. #    define fwrite        PerlSIO_fwrite
  519. #    define setbuf        PerlSIO_setbuf
  520. #    define setvbuf        PerlSIO_setvbuf
  521. #    define setlinebuf        PerlSIO_setlinebuf
  522. #    define stdoutf        PerlSIO_stdoutf
  523. #    define vfprintf        PerlSIO_vprintf
  524. #    define ftell        PerlSIO_ftell
  525. #    define fseek        PerlSIO_fseek
  526. #    define fgetpos        PerlSIO_fgetpos
  527. #    define fsetpos        PerlSIO_fsetpos
  528. #    define frewind        PerlSIO_rewind
  529. #    define tmpfile        PerlSIO_tmpfile
  530. #    define access        PerlLIO_access
  531. #    define chmod        PerlLIO_chmod
  532. #    define chsize        PerlLIO_chsize
  533. #    define close        PerlLIO_close
  534. #    define dup            PerlLIO_dup
  535. #    define dup2        PerlLIO_dup2
  536. #    define flock        PerlLIO_flock
  537. #    define fstat        PerlLIO_fstat
  538. #    define ioctl        PerlLIO_ioctl
  539. #    define isatty        PerlLIO_isatty
  540. #    define link                PerlLIO_link
  541. #    define lseek        PerlLIO_lseek
  542. #    define lstat        PerlLIO_lstat
  543. #    define mktemp        PerlLIO_mktemp
  544. #    define open        PerlLIO_open
  545. #    define read        PerlLIO_read
  546. #    define rename        PerlLIO_rename
  547. #    define setmode        PerlLIO_setmode
  548. #    define stat(buf,sb)    PerlLIO_stat(buf,sb)
  549. #    define tmpnam        PerlLIO_tmpnam
  550. #    define umask        PerlLIO_umask
  551. #    define unlink        PerlLIO_unlink
  552. #    define utime        PerlLIO_utime
  553. #    define write        PerlLIO_write
  554. #    define malloc        PerlMem_malloc
  555. #    define realloc        PerlMem_realloc
  556. #    define free        PerlMem_free
  557. #    define abort        PerlProc_abort
  558. #    define exit        PerlProc_exit
  559. #    define _exit        PerlProc__exit
  560. #    define execl        PerlProc_execl
  561. #    define execv        PerlProc_execv
  562. #    define execvp        PerlProc_execvp
  563. #    define getuid        PerlProc_getuid
  564. #    define geteuid        PerlProc_geteuid
  565. #    define getgid        PerlProc_getgid
  566. #    define getegid        PerlProc_getegid
  567. #    define getlogin        PerlProc_getlogin
  568. #    define kill        PerlProc_kill
  569. #    define killpg        PerlProc_killpg
  570. #    define pause        PerlProc_pause
  571. #    define popen        PerlProc_popen
  572. #    define pclose        PerlProc_pclose
  573. #    define pipe        PerlProc_pipe
  574. #    define setuid        PerlProc_setuid
  575. #    define setgid        PerlProc_setgid
  576. #    define sleep        PerlProc_sleep
  577. #    define times        PerlProc_times
  578. #    define wait        PerlProc_wait
  579. #    define setjmp        PerlProc_setjmp
  580. #    define longjmp        PerlProc_longjmp
  581. #    define signal        PerlProc_signal
  582. #    define getpid        PerlProc_getpid
  583. #    define gettimeofday    PerlProc_gettimeofday
  584. #    define htonl        PerlSock_htonl
  585. #    define htons        PerlSock_htons
  586. #    define ntohl        PerlSock_ntohl
  587. #    define ntohs        PerlSock_ntohs
  588. #    define accept        PerlSock_accept
  589. #    define bind        PerlSock_bind
  590. #    define connect        PerlSock_connect
  591. #    define endhostent        PerlSock_endhostent
  592. #    define endnetent        PerlSock_endnetent
  593. #    define endprotoent        PerlSock_endprotoent
  594. #    define endservent        PerlSock_endservent
  595. #    define gethostbyaddr    PerlSock_gethostbyaddr
  596. #    define gethostbyname    PerlSock_gethostbyname
  597. #    define gethostent        PerlSock_gethostent
  598. #    define gethostname        PerlSock_gethostname
  599. #    define getnetbyaddr    PerlSock_getnetbyaddr
  600. #    define getnetbyname    PerlSock_getnetbyname
  601. #    define getnetent        PerlSock_getnetent
  602. #    define getpeername        PerlSock_getpeername
  603. #    define getprotobyname    PerlSock_getprotobyname
  604. #    define getprotobynumber    PerlSock_getprotobynumber
  605. #    define getprotoent        PerlSock_getprotoent
  606. #    define getservbyname    PerlSock_getservbyname
  607. #    define getservbyport    PerlSock_getservbyport
  608. #    define getservent        PerlSock_getservent
  609. #    define getsockname        PerlSock_getsockname
  610. #    define getsockopt        PerlSock_getsockopt
  611. #    define inet_addr        PerlSock_inet_addr
  612. #    define inet_ntoa        PerlSock_inet_ntoa
  613. #    define listen        PerlSock_listen
  614. #    define recv        PerlSock_recv
  615. #    define recvfrom        PerlSock_recvfrom
  616. #    define select        PerlSock_select
  617. #    define send        PerlSock_send
  618. #    define sendto        PerlSock_sendto
  619. #    define sethostent        PerlSock_sethostent
  620. #    define setnetent        PerlSock_setnetent
  621. #    define setprotoent        PerlSock_setprotoent
  622. #    define setservent        PerlSock_setservent
  623. #    define setsockopt        PerlSock_setsockopt
  624. #    define shutdown        PerlSock_shutdown
  625. #    define socket        PerlSock_socket
  626. #    define socketpair        PerlSock_socketpair
  627. #    endif    /* NETWARE && USE_STDIO */
  628.  
  629. #    ifdef USE_SOCKETS_AS_HANDLES
  630. #      undef fd_set
  631. #      undef FD_SET
  632. #      undef FD_CLR
  633. #      undef FD_ISSET
  634. #      undef FD_ZERO
  635. #      define fd_set        Perl_fd_set
  636. #      define FD_SET(n,p)    PERL_FD_SET(n,p)
  637. #      define FD_CLR(n,p)    PERL_FD_CLR(n,p)
  638. #      define FD_ISSET(n,p)    PERL_FD_ISSET(n,p)
  639. #      define FD_ZERO(p)    PERL_FD_ZERO(p)
  640. #    endif    /* USE_SOCKETS_AS_HANDLES */
  641.  
  642. #  endif  /* NO_XSLOCKS */
  643. #endif  /* PERL_IMPLICIT_SYS && !PERL_CORE */
  644.  
  645. #endif /* _INC_PERL_XSUB_H */        /* include guard */
  646.  
  647. /*
  648.  * Local variables:
  649.  * c-indentation-style: bsd
  650.  * c-basic-offset: 4
  651.  * indent-tabs-mode: t
  652.  * End:
  653.  *
  654.  * ex: set ts=8 sts=4 sw=4 noet:
  655.  */
  656.